مجموعه ها در پایتون
فهرست عناوین
مجموعهها (Sets) در زبان برنامهنویسی پایتون به عنوان یکی از ساختارهای داده مهم و کارآمد معرفی میشوند. این ساختار داده به شما اجازه میدهد تا مجموعهای از عناصر را با ترتیب نامشخص و بدون عنصر تکراری در یک مجموعه ذخیره کنید. مجموعهها معمولاً برای مدیریت مجموعههای مقادیر یکتا (distinct values) استفاده میشوند و در مواقع مختلفی مانند عملیات مجموعهای، حذف تکراریها و بررسی وجود عناصر مفید هستند.
ویژگیهای کلیدی مجموعهها(sets) در پایتون:
1. عناصر یکتا: هر عنصر در یک مجموعه فقط یک بار وجود دارد. این به شما امکان مدیریت لیستهای منحصر به فرد از مقادیر را میدهد.
2. بدون ترتیب: مجموعهها ترتیب خاصی برای عناصر خود ندارند. این به معنایی است که شما نمیتوانید به صورت مستقیم به عنصرها با استفاده از اندیس دسترسی پیدا کنید.
3. عملیات مجموعهای: مجموعهها انواع عملیات مفیدی را برای مدیریت و تغییر عناصر فراهم میکنند، از جمله اجتماع، اشتراک، تفاوت و موارد دیگر.
4. تعریف ساده: شما میتوانید با استفاده از دستور set() یک مجموعه جدید ایجاد کنید و عناصر را به آن اضافه کنید.
ساخت و تعریف مجموعهها در پایتون
روش اصلی برای ساخت یک مجموعه در پایتون، استفاده از دستور set() است. شما میتوانید این دستور را برای ایجاد مجموعههای جدید با عناصر خاص استفاده کنید. به عنوان مثال:
my_set = set([1, 2, 3, 4, 5])
print(my_set)
# خروجی: my_set = {1,2,3,4,5}
در این مثال، یک مجموعه به نام `my_set` ایجاد شده است و عناصر [1, 2, 3, 4, 5] به آن اضافه شدهاند. توجه داشته باشید که مجموعهها در پایتون عناصر تکراری را نمیپذیرند، بنابراین هر عنصر فقط یک بار در مجموعه وجود دارد. همچنین عناصر داخل Set ها در بین علامت {} قرار میگیرند.
ساخت مجموعه خالی
شما میتوانید یک مجموعه خالی ایجاد کنید و به تدریج عناصر را به آن اضافه کنید. برای ساخت یک مجموعه خالی، از دستور `set()` بدون ارسال هیچ پارامتری به آن استفاده کنید:
empty_set = set()
عملیات اصلی بر روی مجموعهها در پایتون
مجموعهها در پایتون انواع عملیات کاربردی را برای مدیریت عناصر ارائه میدهند. این عملیاتها از ترکیب، اضافه کردن، حذف کردن، بررسی وجود عناصر تا ترکیب مجموعهها و تشخیص تفاوتها، به شما امکان مدیریت مجموعههای خود را میدهند. در ادامه به مهمترین عملیاتهای مجموعهها در پایتون میپردازیم:
1. اضافه کردن عناصر به set ها: شما میتوانید با استفاده از دستور add() عناصر جدید را به یک مجموعه اضافه کنید. این عملیات به شما امکان میدهد تا عناصر تکراری را از یک مجموعه حذف کنید.
my_set = set()
my_set.add(1)
my_set.add(2)
2. حذف عناصر از set ها: با استفاده از دستور remove() میتوانید یک عنصر خاص را از مجموعه حذف کنید. اگر عنصر مورد نظر وجود نداشته باشد، خطای KeyError را پرتاب میکند. برای جلوگیری از خطا، میتوانید از discard() استفاده کنید که در صورت عدم وجود عنصر، خطایی پرتاب نمیکند.
my_set.remove(2)
3. بررسی وجود عناصر: شما میتوانید با استفاده از دستور in بررسی کنید که آیا یک عنصر خاص در مجموعه وجود دارد یا خیر.
if 3 in my_set:
print("عدد 3 در مجموعه وجود دارد.")
4. ترکیب مجموعهها (Union): با استفاده از دستور union() میتوانید دو مجموعه را ترکیب کرده و مجموعهای جدید از تمام عناصر دو مجموعه ایجاد کنید.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result_set = set1.union(set2)
5. اشتراک مجموعهها (Intersection): با استفاده از دستور intersection() میتوانید تمام عناصری که در هر دو مجموعه وجود دارند را بازیابی کنید.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
common_elements = set1.intersection(set2)
6. تفاوت مجموعهها (Difference): با استفاده از دستور difference() میتوانید تمام عناصری که در یک مجموعه وجود دارند و در مجموعه دیگر وجود ندارند را بازیابی کنید.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference = set1.difference(set2)
7. تفاوت تقارنی مجموعهها (Symmetric Difference): با استفاده از دستور symmetric_difference() میتوانید تمام عناصری که در یکی از مجموعهها وجود دارند ولی در هر دو مجموعه نیستند را بازیابی کنید.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_diff = set1.symmetric_difference(set2)
8. تعداد عناصر مجموعه: با استفاده از دستور len() میتوانید تعداد عناصر موجود در یک مجموعه را به دست آورید.
num_elements = len(my_set)
9. زیرمجموعهسازی (Subset and Superset): با استفاده از دستورهای `issubset()` و `issuperset()` میتوانید بررسی کنید که آیا یک مجموعه زیرمجموعهای یا فرامجموعهای از مجموعه دیگر است.
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
is_subset = set1.issubset(set2) # True
is_superset = set2.issuperset(set1) # True
10. تغییر مجموعهها (Mutable Sets): تا نسخهی 3.6 پایتون، مجموعهها از نظر تغییرپذیری (mutable) نبوده و نمیتوانستید عناصر را تغییر دهید. از نسخهی 3.6 به بعد، میتوانید از نوع دادهی frozenset برای ایجاد مجموعههای تغییرناپذیر استفاده کنید.
my_set = frozenset([1, 2, 3])
ویژگیها و مزایای set ها در پایتون
مجموعهها به عنوان یکی از ساختارهای داده مهم در پایتون دارای ویژگیها و مزایای بسیاری هستند که آنها را در بسیاری از موارد کاربردی میسازند. در زیر به ویژگیها و مزایای اصلی مجموعهها در پایتون اشاره میشود:
1. عناصر یکتا (Distinct Elements): یکی از ویژگیهای اصلی مجموعهها این است که هر عنصر در یک مجموعه فقط یک بار وجود دارد. این ویژگی به شما اجازه میدهد تا لیستهای منحصر به فردی از مقادیر را مدیریت کنید و تکرارها را از بین ببرید.
2. سرعت دسترسی (Fast Access): به دلیل استفاده از تکنیکهای بهینه برای ذخیره سازی دادهها، دسترسی به عناصر در مجموعهها بسیار سریع است. این ویژگی برای عملیاتی مانند بررسی وجود یک عنصر در مجموعه یا افزودن و حذف عناصر بسیار مهم است.
3. عملیات مجموعهای (Set Operations): مجموعهها دارای عملیاتهای مجموعهای مانند اجتماع، اشتراک، تفاوت و تفاوت تقارنی هستند که به شما امکان میدهند مسائل متعددی را با کمک مجموعهها حل کنید.
4. ترتیب نداشتن (Unordered): مجموعهها در پایتون ترتیب خاصی برای عناصر خود ندارند. این به معنایی است که شما نمیتوانید به صورت مستقیم به عناصر با استفاده از اندیس دسترسی پیدا کنید. این ویژگی مناسب برای مواردی است که ترتیب عناصر مهم نیست.
5. سازگاری با دیگر ساختارهای داده (Interoperability): مجموعهها به راحتی به دیگر ساختارهای داده مانند لیستها یا دیکشنریها تبدیل میشوند و از آنها به عنوان کلید یا مقدار در دیکشنریها نیز استفاده میشود.
6. کاربردهای متعدد (Versatility): مجموعهها در حل مسائل متعددی مفید هستند. از جمله کاربردهای معمول آنها محاسبات مجموعهای، حذف تکراریها از دادهها، فیلتر کردن دادهها و موارد دیگر میباشد.
7. تغییرناپذیر یا تغییرپذیر (Mutable vs. Immutable): مجموعهها در پایتون به صورت تغییرپذیر (mutable) و تغییرناپذیر (immutable) در دسترس هستند. تغییرناپذیری مجموعهها به شما امکان میدهد تا مجموعههایی را ایجاد کنید که عناصر آنها نمیتوانند تغییر کنند (frozenset)، در حالی که مجموعههای تغییرپذیر به راحتی قابل تغییر هستند.
مجموعهها به عنوان یکی از ساختارهای داده اساسی در پایتون از اهمیت بسیاری برخوردارند و برای مدیریت و تحلیل دادهها در بسیاری از برنامهها و پروژهها بسیار مفید واقع میشوند.
مقایسه مجموعه ها با تاپل ها و لیست ها
مجموعهها (sets)، لیستها (lists) و تاپلها (tuples) سه نوع مختلف از ساختارهای داده در پایتون هستند، هر کدام با ویژگیها و کاربردهای متفاوتی ارائه میشوند. در ادامه، مجموعهها را با لیستها و تاپلها مقایسه میکنیم:
1. مجموعهها (Sets):
- تکراری ندارند: هر عنصر در یک مجموعه فقط یک بار وجود دارد. اگر یک عنصر تکراری به یک مجموعه اضافه شود، تاثیری ندارد.
- ترتیب ندارند: عناصر در یک مجموعه به ترتیبی خاص نمیآیند و نمیتوان به عناصر با استفاده از اندیس دسترسی پیدا کرد.
- تغییرپذیری (Mutable): مجموعهها قابل تغییر هستند، یعنی میتوانید عناصر را اضافه، حذف و تغییر دهید.
2. لیستها (Lists):
- تکراری میتوانند باشند: در لیستها امکان تکرار عناصر وجود دارد. یعنی میتوانید یک عنصر را به تعداد دلخواه در یک لیست قرار دهید.
- ترتیب دارند: عناصر در یک لیست به ترتیب خاصی ذخیره میشوند و با استفاده از اندیس میتوانید به عناصر دسترسی پیدا کنید.
- تغییرپذیری (Mutable): لیستها قابل تغییر هستند، بنابراین میتوانید عناصر را اضافه، حذف و تغییر دهید.
3. تاپلها (Tuples):
- تکراری میتوانند باشند: تاپلها امکان تکرار عناصر را دارند.
- ترتیب دارند: عناصر در تاپلها به ترتیب ذخیره میشوند و با استفاده از اندیس میتوانید به عناصر دسترسی پیدا کنید.
- تغییرناپذیری (Immutable): تاپلها تغییرناپذیر هستند، به این معنا که پس از ایجاد، نمیتوانید عناصر را تغییر دهید یا اضافه یا حذف کنید.
مقایسهای از این سه ساختار داده:
- اگر نیاز به مجموعهای از عناصر منحصر به فرد باشد و ترتیب عناصر مهم نباشد، مجموعهها بهترین گزینه هستند.
- اگر نیاز به ترتیب دار بودن عناصر داشته باشید و تغییر دادن عناصر نیز مهم باشد، لیستها انتخاب خوبی هستند.
- اگر نیاز به ترتیب دار بودن عناصر داشته باشید ولی تغییر ندادن عناصر مهم باشد، تاپلها مناسبترین گزینه هستند.
توجه داشته باشید که انتخاب مناسبی از ساختار داده به ویژگیها و نیازهای خاص برنامهی شما بستگی دارد.
مثال های مختلف برای درس set ها در پایتون
در این بخش، چند مثال عملی از استفاده از مجموعهها در پایتون را ارائه میدهیم تا بهترین شکل ممکن از این مفاهیم درک شود.
مثال 1: حذف تکراریها از یک لیست
یکی از کاربردهای معمول مجموعهها در پایتون، حذف عناصر تکراری از یک لیست است. در این مثال، میخواهیم تکراریها را از یک لیست حذف کنیم:
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list)
unique_list = list(unique_set)
print(unique_list) # [1, 2, 3, 4, 5]
مثال 2: انجام عملیات مجموعهای
در این مثال، دو مجموعه را ترکیب، اشتراک و تفاوت میدهیم:
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
# اجتماع مجموعهها
union_set = set1.union(set2)
print("اجتماع مجموعهها:", union_set) # {1, 2, 3, 4, 5, 6, 7}
# اشتراک مجموعهها
intersection_set = set1.intersection(set2)
print("اشتراک مجموعهها:", intersection_set) # {3, 4, 5}
# تفاوت مجموعهها
difference_set = set1.difference(set2)
print("تفاوت مجموعه 1 - مجموعه 2:", difference_set) # {1, 2}
مثال 3: بررسی عضویت
در این مثال، بررسی میکنیم که آیا یک عنصر خاص در مجموعه وجود دارد یا خیر:
fruits = {"سیب", "پرتقال", "موز"}
if "سیب" in fruits:
print("سیب در مجموعه وجود دارد.")
else:
print("سیب در مجموعه وجود ندارد.")
مثال 4: مدیریت مجموعههای تغییرناپذیر (frozenset)
در این مثال، از مجموعههای تغییرناپذیر (frozenset) برای ایجاد مجموعهای که نمیتوانیم تغییر دهیم استفاده میشود:
immutable_set = frozenset([1, 2, 3])
# تغییر مجموعه تغییرناپذیر غیرممکن است
# immutable_set.add(4) # این خطا خواهد داد
این مثالها نشان میدهند که مجموعهها در پایتون چگونه میتوانند در موارد مختلف مفید باشند و چگونه میتوان از ویژگیها و عملیاتهای مجموعهها بهرهبرداری کرد.
تمرین
تمرین 1: تشکیل مجموعه تکراری
نوشتهای دارید که شامل اعداد تکراری است. با استفاده از مجموعهها، تمام اعداد تکراری را حذف کنید و نتیجه را در یک لیست جدید ذخیره کنید.
تمرین 2: ایجاد مجموعهها بر اساس شرایط خاص
یک لیستی دارید که اعدادی را شامل میشود. با استفاده از شرایط خاصی، دو مجموعه جدید ایجاد کنید: یکی حاوی اعداد فرد و دیگری حاوی اعداد زوج.
تمرین 3: بررسی تعداد عناصر مشترک
دو مجموعه دارید. برنامهای بنویسید که تعداد عناصر مشترک بین این دو مجموعه را محاسبه کند و نمایش دهد.
تمرین 4: عملیات مجموعهای پیشرفته
یک مجموعه دلخواه ایجاد کنید و سپس عملیات مجموعهای پیشرفته از جمله اجتماع، اشتراک، و تفاوت را با یک مجموعه دیگر انجام دهید.
تمرین 5: تغییرناپذیری مجموعهها
یک مجموعه تغییرناپذیر (frozenset) ایجاد کنید و تلاش کنید یک عنصر جدید به آن اضافه کنید تا به خطای چهارپایتونی برخورد کنید.
این تمرینها به شما امکان میدهند مفاهیم مجموعهها را در پایتون تمرین کرده و درک بهتری از کاربردهای آنها در برنامهنویسی پایتون پیدا کنید.